package com.zw.pm.module.system.user;

import com.zw.pm.gen.entity.User;
import com.zw.pm.module.integrate.interactive.MessageModel;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description: 用户数据访问层
 *
 * @Author: China.sgl
 * @Date: 2019/9/16 09:11
 */
public interface UserDao {

    /**
     * 根据条件查询用户
     *
     * @param user 用户条件
     * @return 用户集合
     */
    List<User> findAll(User user);

    /**
     * 根据帐号查询用户
     *
     * @param account 帐号
     * @return 用户信息
     */
    User findByAccount(String account);

    /**
     * 保存用户，角色关联关系
     *
     * @param id 用户ID
     * @param roleIds 角色ID数组
     */
    void batchInsertUserRoles(@Param("id") Integer id, @Param("roleIds") Integer[] roleIds);

    /**
     * 根据 用户ID 删除用户角色关联关系
     *
     * @param id 用户ID
     */
    void deleteUserRoleByUserId(Integer id);

    /**
     * 查询接收消息用户
     *
     * @return list
     */
    List<User> findByReceiver();

    /**
     * 按用名户查询
     *
     * @param name name
     * @return User
     */
    User getByName(String name);

    /**
     * 获取用户未读消息
     *
     * @param userId 用户ID
     * @param type 类型ID
     * @return list
     */
    List<MessageModel> findMessageByUserId(@Param("userId") Integer userId, @Param("type") Integer type);

    /**
     * 按类型修改用户消息状态为已读
     *
     * @param userId 用户ID
     * @param type 消息类型
     */
    void updateMessageStatusByUserAndType(@Param("userId") Integer userId, @Param("type") int type);
}